Öğrenme Yol Haritası — 2024

C Programlama
Sıfırdan Uzmanlığa

Adım adım, proje tabanlı C programlama öğrenme rehberi. 5 faz, 20+ proje, 40+ konu.

5 Faz
6–12 Ay
20+ Proje
40+ Konu
Faz 01 Temel Kavramlar — C'ye Giriş 2–4 hafta
Ortam Kurulumu
  • GCC / Clang kurulumu
  • VS Code veya CLion ayarı
  • Makefile temelleri
  • Derleme & çalıştırma akışı
  • İlk "Hello, World!" programı
Veri Tipleri & Değişkenler
  • int, float, double, char
  • Signed / unsigned farkı
  • sizeof operatörü
  • Sabitler ve #define
  • Tür dönüşümleri (casting)
Operatörler & İfadeler
  • Aritmetik operatörler
  • Karşılaştırma & mantık
  • Bit düzeyinde operatörler
  • Operatör önceliği
  • Ternary operatör
Kontrol Akışı
  • if / else if / else
  • switch-case
  • for, while, do-while
  • break, continue, goto
  • İç içe döngüler
I/O İşlemleri
  • printf format belirticileri
  • scanf ile girdi alma
  • getchar / putchar
  • Hata akışı stderr
  • Format string güvenliği
Hesap Makinesi Sıcaklık Dönüştürücü FizzBuzz Asal Sayı Bulucu Sayı Tahmin Oyunu
Bu fazda her gün en az 1 küçük program yaz. Kodu ezberlemek yerine mantığını anlamaya odaklan. Derleme hatalarını okumaktan korkma — onlar seni öğretir.
Faz 02 Fonksiyonlar, Diziler & String'ler 2–4 hafta
Fonksiyonlar
  • Fonksiyon tanımlama & prototip
  • Parametre geçirme (değer/referans)
  • Return tipleri & void
  • Özyinelemeli (recursive) fonksiyonlar
  • Fonksiyon aşırı yükleme (yok, ama alternatifler)
Diziler
  • 1D ve 2D diziler
  • Dizi başlatma yöntemleri
  • Dizi üzerinde döngüler
  • Fonksiyona dizi geçirme
  • Dizi sınır dışı erişim riski
String İşlemleri
  • char dizisi ve null terminator \0
  • strcpy, strcat, strlen
  • strcmp, strstr, strtok
  • String okuma: fgets
  • sprintf ve snprintf
Kapsam & Depolama
  • Yerel vs global değişkenler
  • static değişkenler
  • auto, register, extern
  • Stack frame kavramı
  • Kapsam çakışması riski
Sıralama Algoritmaları (Bubble, Insertion, Selection) Matris Çarpımı Sözcük Sayacı Fibonacci & Faktöriyel Palindrom Kontrolü
Recursive fonksiyonları yazarken her zaman base case'i önce düşün. Sonsuz özyinelemeli çağrı stack overflow'a neden olur.
Faz 03 Pointer'lar & Bellek Yönetimi 3–5 hafta
Pointer Temelleri
  • Adres & referans operatörleri (* ve &)
  • Pointer aritmetiği
  • Pointer ve diziler ilişkisi
  • void pointer, NULL pointer
  • Dangling pointer tehlikesi
Dinamik Bellek
  • malloc, calloc, realloc
  • free ile bellek serbest bırakma
  • Bellek sızıntısı (memory leak)
  • Valgrind ile hata tespiti
  • Heap vs Stack farkı
Gelişmiş Pointer Kullanımı
  • Pointer dizileri
  • Pointer'a pointer (çift yıldız **)
  • Fonksiyon pointer'ları
  • const pointer kullanımı
  • restrict anahtar kelimesi
String & Bellek
  • memcpy, memmove, memset
  • Dinamik string manipülasyonu
  • Buffer overflow riskleri
  • Güvenli string fonksiyonları
  • strdup ile kopyalama
Dinamik Not Takip Sistemi String Reverse & Manipülasyon Fonksiyon Pointer Menü Dinamik Dizi Genişletici
Bu faz C öğrenmenin en kritik noktasıdır. Pointer'ları tam kavramadan ilerlemek ilerleyen konularda büyük sorunlara yol açar. Her malloc için bir free yazdığını garantile. Bolca pratik yap.
Faz 04 Struct, Dosya I/O & Veri Yapıları 3–5 hafta
Struct & Union
  • struct tanımlama & kullanım
  • Pointer ile struct erişimi (->)
  • İç içe struct'lar
  • union ve enum kullanımı
  • Anonim struct'lar
typedef & Bit Alanları
  • typedef ile tip takma adı
  • Bit field yapıları
  • Bellek hizalama (alignment)
  • Padding ve sizeof struct
  • Packed struct kullanımı
Dosya İşlemleri
  • fopen, fclose, fread, fwrite
  • fprintf, fscanf, fgets
  • Binary vs text dosya modu
  • fseek, ftell, rewind
  • Hata kontrolü ve feof
Bağlı Listeler
  • Tek yönlü bağlı liste
  • Çift yönlü bağlı liste
  • Döngüsel bağlı liste
  • Stack ve Queue implementasyonu
  • Liste üzerinde arama & silme
Ağaç & Hash Yapıları
  • Binary search tree (BST)
  • Tree traversal (inorder, preorder, postorder)
  • Hash tablosu implementasyonu
  • Çakışma çözme yöntemleri
  • Basit graf temsili (adjacency list)
Kişi Rehberi (Dosya Destekli) Stack & Queue Implementasyonu Binary Search Tree CSV Dosya İşleyici Basit Veritabanı Simülasyonu
Veri yapılarını kağıt üzerinde çizerek anlamak, kodu doğrudan yazmaktan çok daha etkilidir. Her veri yapısını önce diyagramla, sonra kodla.
Faz 05 İleri Seviye — Sistem Programlama & Optimizasyon 4–8 hafta
Önişlemci (Preprocessor)
  • #define, #ifdef, #ifndef, #endif
  • Makro fonksiyonları & tuzakları
  • Çok dosyalı proje yapısı
  • Header guard kullanımı
  • #pragma once
Hata Yönetimi
  • errno ve perror kullanımı
  • Hata kodları ve geri dönüş değerleri
  • assert makrosu
  • Savunmacı programlama teknikleri
  • setjmp / longjmp ile exception benzeri yapı
Sistem Çağrıları (POSIX)
  • fork, exec, wait
  • Sinyal (signal) mekanizması
  • Pipe ve FIFO
  • Shared memory (shmget)
  • Socket programlamaya giriş
Çok İş Parçacıklı Programlama
  • pthreads kütüphanesi
  • Mutex ve semafor
  • Race condition ve deadlock
  • Thread-safe programlama
  • Thread pool implementasyonu
Performans & Araçlar
  • GDB ile adım adım debug etme
  • Valgrind bellek analizi
  • Profiling (gprof, perf)
  • Compiler optimizasyonları (-O1, -O2, -O3)
  • Cache-friendly kod yazımı
Mini Shell (Komut Satırı Yorumlayıcı) Çok Parçacıklı Dosya Kopyalayıcı TCP Echo Server / Client Custom malloc Implementasyonu Basit HTTP Sunucusu
Bu faza gelmeden önce önceki fazları tam kavradığından emin ol. Faz 5 projeleri iş başvurularında ve sistem programlamada doğrudan kullanılabilir seviyedir. Mini Shell projesi tek başına mükemmel bir portföy parçasıdır.